package com.cinc.mdm.modules.bom.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.cinc.mdm.modules.bom.entity.MdmBomDetail;
import com.cinc.mdm.modules.bom.entity.MdmBom;
import com.baomidou.mybatisplus.extension.service.IService;
import com.cinc.mdm.modules.bom.vo.MdmBomPage;
import com.cinc.mdm.modules.bom.vo.MdmBomTreePage;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Collection;
import java.util.List;

/**
 * @Description: bom主记录
 * @Author: jeecg-boot
 * @Date:   2021-10-24
 * @Version: V1.0
 */
public interface IMdmBomService extends IService<MdmBom> {

	/**
	 * 批量添加一对多
	 *
	 */
	void saveBatchMain(List<MdmBomPage> mdmBomList) ;

	/**
	 * 添加一对多
	 *
	 */
	public void saveMain(MdmBom mdmBom,List<MdmBomDetail> mdmBomDetailList) ;

	/**
	 * 修改一对多
	 *
	 */
	public void updateMain(MdmBom mdmBom,List<MdmBomDetail> mdmBomDetailList, List<String> mdmBomDetailDeleteIdList, List<String> mdmBomDetailAddIdList);

	/**
	 * 批量添加/修改一对多
	 *
	 */
	void saveOrUpdBatchMain(List<MdmBomPage> mdmBomList) ;

	/**
	 * 删除一对多
	 */
	public void delMain (String id);

	/**
	 * 批量删除一对多
	 */
	public void delBatchMain (Collection<? extends Serializable> idList);

    IPage<MdmBomPage> pageList(Page<MdmBomPage> page, MdmBomPage mdmBomPage);

    List<MdmBomPage> listBom(MdmBomPage mdmBomPage);

    List<MdmBomTreePage> queryTreeList(String materialDesc, String materialTypeCode, String levelType);
    MdmBomTreePage queryTree(String materialId, BigDecimal reqQty);

    void updateTree(MdmBomTreePage mdmBomTreePage);

    /**
     * 多级BOM列表查询
     *
     * @param page
     * @param mdmBomPage
     * @return com.baomidou.mybatisplus.core.metadata.IPage<com.cinc.mdm.modules.bom.vo.MdmBomPage>
     */
	IPage<MdmBomPage> findMultiLevelList(Page<MdmBomPage> page, MdmBomPage mdmBomPage);
}
